using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AssetFrame.Message;
using System.Reflection;
using System.Data;
using MySql.Data.MySqlClient;
using SysFrame.Message;
using SysFrame.BP;

namespace AssetFrame.BP
{
    /// <summary>
    /// sys_asset_a3方法
    /// </summary>
    public class MySQLsys_asset_a3 : Isys_asset_a3
    {
        /// <summary>
        /// 字段配置表
        /// </summary>
        public static BLLsys_asset_a1 bllsysa1 = new BLLsys_asset_a1();
        /// <summary>
        /// 得到sys_asset_a3实体
        /// </summary>
        /// <param name="msq">条件</param>
        /// <returns></returns>
        public List<Mssys_asset_a3> Getsys_asset_a3MsByQuery(MsQuery msq)
        {
            List<Mssys_asset_a3> listms = new List<Mssys_asset_a3>();
            StringBuilder sb = new StringBuilder();
            List<string> lstCmdText = new List<string>();
            sb.Append("select sys_asset_a3.* ");
            sb.Append(",s1.SYSTEM_4_40 as strSYS_ASSET_A3_50 ");//动作分类
            sb.Append(",s2.SYS_ASSET_A1_50 as strSYS_ASSET_A3_20 ");//字段
            sb.Append(" from sys_asset_a3 ");
            sb.Append(" LEFT JOIN SYSTEM_4 s1 on s1.SYSTEM_4_20=SYS_ASSET_A3_50 ");//动作分类
            sb.Append(" LEFT JOIN SYS_ASSET_A1 s2 on s2.SYS_ASSET_A1_160=SYS_ASSET_A3_20 ");//字段
            sb.Append(" where 1=1 ").Append(msq.strquery);
            if (msq.strorder != null && msq.strorder != "")
            {
                sb.Append(" order by ").Append(msq.strorder);
            }
            else
            {
                sb.Append(" order by ").Append("SYS_ASSET_A3_60 desc");
            }
            lstCmdText.Add(sb.ToString());
            sb.Remove(0, sb.ToString().Length);
            try
            {
                DataSet ds = DbHelperMySQL.Query(lstCmdText[0].ToString());
                if (ds != null && ds.Tables.Count != 0 && ds.Tables[0].Rows.Count != 0)
                {
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        Mssys_asset_a3 ms = new Mssys_asset_a3();
                        int? AUTOID = null;
                        ms.AUTOID = dr["AUTOID"].ToString() == "" ? AUTOID : (int)dr["AUTOID"];// 
                        int? SYS_ASSET_A3_10 = null;
                        ms.SYS_ASSET_A3_10 = dr["SYS_ASSET_A3_10"].ToString() == "" ? SYS_ASSET_A3_10 : (int)dr["SYS_ASSET_A3_10"];// 资产ID
                        int? SYS_ASSET_A3_20 = null;
                        ms.SYS_ASSET_A3_20 = dr["SYS_ASSET_A3_20"].ToString();// 字段ID
                        ms.strSYS_ASSET_A3_20 = dr["strSYS_ASSET_A3_20"].ToString();// 字段

                        ms.SYS_ASSET_A3_30 = dr["SYS_ASSET_A3_30"].ToString();// 原值
                        ms.strSYS_ASSET_A3_30 = GetValueByField(ms.SYS_ASSET_A3_20, ms.SYS_ASSET_A3_30);

                        ms.SYS_ASSET_A3_40 = dr["SYS_ASSET_A3_40"].ToString();// 改变后的值
                        ms.strSYS_ASSET_A3_40 = GetValueByField(ms.SYS_ASSET_A3_20, ms.SYS_ASSET_A3_40);

                        ms.SYS_ASSET_A3_50 = dr["SYS_ASSET_A3_50"].ToString();// 动作分类
                        ms.strSYS_ASSET_A3_50 = dr["strSYS_ASSET_A3_50"].ToString();// 动作分类

                        ms.SYS_ASSET_A3_60 = dr["SYS_ASSET_A3_60"].ToString();// 时间

                        ms.SYS_ASSET_A3_70 = dr["SYS_ASSET_A3_70"].ToString();//关联ID
                        ms.strSYS_ASSET_A3_70 = Getstr70(ms.SYS_ASSET_A3_50, ms.SYS_ASSET_A3_70);
                        ms.SYS_ASSET_A3_80 = dr["SYS_ASSET_A3_80"].ToString();// 备用2

                        ms.SYS_ASSET_A3_90 = dr["SYS_ASSET_A3_90"].ToString();// 备用3

                        ms.SYS_ASSET_A3_100 = dr["SYS_ASSET_A3_100"].ToString();// 备用4

                        ms.SYS_ASSET_A3_110 = dr["SYS_ASSET_A3_110"].ToString();// 备用5
                        listms.Add(ms);
                    }
                }
            }
            catch(Exception ex) { }
            return listms;
        }

        /// <summary>
        /// 得到变动想关联的显示
        /// </summary>
        /// <param name="sYS_ASSET_A3_50">动作分类</param>
        /// <param name="sYS_ASSET_A3_70">值</param>
        /// <returns></returns>
        private string Getstr70(string sYS_ASSET_A3_50, string sYS_ASSET_A3_70)
        {
            /*
             * 通过修改 为人员姓名
             * 通过导入 为导入
             * 通过接口 为接口
             * 通过业务 为任务编号
             */
            string str = "";
            switch (sYS_ASSET_A3_50)
            {
                case "007001"://页面修改
                    if (!string.IsNullOrEmpty(sYS_ASSET_A3_70))
                    {
                        Mssystem_1 mssys1 = new Mssystem_1();
                        mssys1 = new BLLsystem_1().Getsystem_1MsByKey(sYS_ASSET_A3_70);
                        str = mssys1.System_1_120;
                    }
                    break;
                case "007002"://导入
                    str = "导入";
                    break;
                default: break;
            }
            return str;
        }

        /// <summary>
        /// 通过资产字段的到值
        /// </summary>
        /// <param name="sYS_ASSET_A3_20">字段</param>
        /// <param name="sYS_ASSET_A3_30">值</param>
        /// <returns></returns>
        private string GetValueByField(string sYS_ASSET_A3_20, string sYS_ASSET_A3_30)
        {
            Mssys_asset_a1 mssysa1 = new Mssys_asset_a1();
            MsQuery msq = new MsQuery();
            msq.strquery += " and SYS_ASSET_A1_160 ='"+ sYS_ASSET_A3_20 + "'";
            try
            {
                mssysa1 = bllsysa1.Getsys_asset_a1MsByQuery(msq)[0];
            }
            catch { }
            //如果有关联表
            if (mssysa1!=null && !string.IsNullOrEmpty(mssysa1.SYS_ASSET_A1_60) && !string.IsNullOrEmpty(mssysa1.SYS_ASSET_A1_70) && !string.IsNullOrEmpty(mssysa1.SYS_ASSET_A1_80))
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("select ").Append(mssysa1.SYS_ASSET_A1_80).Append(" from ");
                sb.Append(mssysa1.SYS_ASSET_A1_60);
                sb.Append(" where 1=1 ").Append(" and ").Append(mssysa1.SYS_ASSET_A1_70).Append("='" + sYS_ASSET_A3_30 + "'");
                sb.Append(mssysa1.SYS_ASSET_A1_90);
                DataSet ds = DbHelperMySQL.Query(sb.ToString());
                if (ds != null && ds.Tables.Count != 0 && ds.Tables[0].Rows.Count != 0)
                {
                    return ds.Tables[0].Rows[0][0].ToString();
                }
                return "";
            }
            else
            {
                return sYS_ASSET_A3_30;
            }
        }

        /// <summary>
        ///  保存sys_asset_a3信息
        /// </summary>
        /// <param name="ms">实体信息 通过AUTOID进行判断有AUTOID就是update</param>
        /// <returns>消息</returns>
        public MsReturned Savesys_asset_a3(Mssys_asset_a3 ms)
        {
            MsReturned msr = new MsReturned();
            if (ms.AUTOID != null && ms.AUTOID.ToString() != "" && ms.AUTOID.ToString() != "0")
            {
                msr = Upsys_asset_a3(ms);
            }
            else
            {
                msr = Addsys_asset_a3(ms);
            }
            return msr;
        }

        /// <summary>
        ///  新增sys_asset_a3信息
        /// </summary>
        /// <param name="ms">实体信息 通过AUTOID进行判断有AUTOID就是update</param>
        /// <returns>消息</returns>
        public MsReturned Addsys_asset_a3(Mssys_asset_a3 ms)
        {
            List<string> lstResult = new List<string>();
            StringBuilder sb = new StringBuilder();
            List<string> lstCmdText = new List<string>();
            MsReturned msr = new MsReturned();
            int newRateId = DataBase.GetMaxId("sys_asset_a3", "AUTOID");
            sb.Append("insert into sys_asset_a3 (");
            sb.Append("AUTOID,SYS_ASSET_A3_10,SYS_ASSET_A3_20,SYS_ASSET_A3_30,SYS_ASSET_A3_40,");
            sb.Append("SYS_ASSET_A3_50,SYS_ASSET_A3_60,SYS_ASSET_A3_70,SYS_ASSET_A3_80,SYS_ASSET_A3_90,");
            sb.Append("SYS_ASSET_A3_100,SYS_ASSET_A3_110");
            sb.Append(")");
            sb.Append("values ( ");
            sb.Append(newRateId.ToString()).Append(",");
            sb.Append("'");
            sb.Append(ms.SYS_ASSET_A3_10).Append("','");//SYS_ASSET_A3_10 资产ID
            sb.Append(ms.SYS_ASSET_A3_20).Append("','");//SYS_ASSET_A3_20 字段ID
            sb.Append(ms.SYS_ASSET_A3_30).Append("','");//SYS_ASSET_A3_30 原值
            sb.Append(ms.SYS_ASSET_A3_40).Append("','");//SYS_ASSET_A3_40 改变后的值
            sb.Append(ms.SYS_ASSET_A3_50).Append("','");//SYS_ASSET_A3_50 动作分类
            sb.Append(ms.SYS_ASSET_A3_60).Append("','");//SYS_ASSET_A3_60 时间
            sb.Append(ms.SYS_ASSET_A3_70).Append("','");//SYS_ASSET_A3_70关联ID
            sb.Append(ms.SYS_ASSET_A3_80).Append("','");//SYS_ASSET_A3_80 备用2
            sb.Append(ms.SYS_ASSET_A3_90).Append("','");//SYS_ASSET_A3_90 备用3
            sb.Append(ms.SYS_ASSET_A3_100).Append("','");//SYS_ASSET_A3_100 备用4
            sb.Append(ms.SYS_ASSET_A3_110).Append("')");//SYS_ASSET_A3_110 备用5
            MySqlParameter[] parameters = null;
            lstCmdText.Add(sb.ToString());
            sb.Remove(0, sb.ToString().Length);
            try
            {
                int iexe = DbHelperMySQL.ExecuteSql(lstCmdText[0].ToString(), parameters);
                if (iexe > 0)
                {
                    msr.strMsId = newRateId.ToString();
                    msr.strMS = "保存成功!";
                }
                else
                {
                    msr.strMsId = "-1";
                    msr.strMS = "操作失败:服务器忙,请稍后再试!";
                }
            }
            catch
            {
                msr.strMsId = "-1";
                msr.strMS = "操作失败:服务器忙,请稍后再试!";
            }
            lstCmdText = null;
            sb = null;
            return msr;
        }

        /// <summary>
        ///  更新sys_asset_a3信息
        /// </summary>
        /// <param name="ms">实体信息 通过AUTOID进行判断有AUTOID就是update</param>
        /// <returns>消息</returns>
        public MsReturned Upsys_asset_a3(Mssys_asset_a3 ms)
        {
            List<string> lstResult = new List<string>();
            StringBuilder sb = new StringBuilder();
            List<string> lstCmdText = new List<string>();
            MsReturned msr = new MsReturned();
            sb.Append("update sys_asset_a3 set ");
            sb.Append(" AUTOID='").Append(ms.AUTOID).Append("' ");// AUTOID 
            if (ms.SYS_ASSET_A3_10 != null && ms.SYS_ASSET_A3_10.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_10='").Append(ms.SYS_ASSET_A3_10).Append("' ");// SYS_ASSET_A3_10 资产ID
            }
            if (ms.SYS_ASSET_A3_20 != null && ms.SYS_ASSET_A3_20.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_20='").Append(ms.SYS_ASSET_A3_20).Append("' ");// SYS_ASSET_A3_20 字段ID
            }
            if (ms.SYS_ASSET_A3_30 != null && ms.SYS_ASSET_A3_30.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_30='").Append(ms.SYS_ASSET_A3_30).Append("' ");// SYS_ASSET_A3_30 原值
            }
            if (ms.SYS_ASSET_A3_40 != null && ms.SYS_ASSET_A3_40.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_40='").Append(ms.SYS_ASSET_A3_40).Append("' ");// SYS_ASSET_A3_40 改变后的值
            }
            if (ms.SYS_ASSET_A3_50 != null && ms.SYS_ASSET_A3_50.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_50='").Append(ms.SYS_ASSET_A3_50).Append("' ");// SYS_ASSET_A3_50 动作分类
            }
            if (ms.SYS_ASSET_A3_60 != null && ms.SYS_ASSET_A3_60.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_60='").Append(ms.SYS_ASSET_A3_60).Append("' ");// SYS_ASSET_A3_60 时间
            }
            if (ms.SYS_ASSET_A3_70 != null && ms.SYS_ASSET_A3_70.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_70='").Append(ms.SYS_ASSET_A3_70).Append("' ");// SYS_ASSET_A3_70关联ID
            }
            if (ms.SYS_ASSET_A3_80 != null && ms.SYS_ASSET_A3_80.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_80='").Append(ms.SYS_ASSET_A3_80).Append("' ");// SYS_ASSET_A3_80 备用2
            }
            if (ms.SYS_ASSET_A3_90 != null && ms.SYS_ASSET_A3_90.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_90='").Append(ms.SYS_ASSET_A3_90).Append("' ");// SYS_ASSET_A3_90 备用3
            }
            if (ms.SYS_ASSET_A3_100 != null && ms.SYS_ASSET_A3_100.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_100='").Append(ms.SYS_ASSET_A3_100).Append("' ");// SYS_ASSET_A3_100 备用4
            }
            if (ms.SYS_ASSET_A3_110 != null && ms.SYS_ASSET_A3_110.ToString() != "")
            {
                sb.Append(",").Append(" SYS_ASSET_A3_110='").Append(ms.SYS_ASSET_A3_110).Append("' ");// SYS_ASSET_A3_110 备用5
            }
            sb.Append(" where AUTOID='").Append(ms.AUTOID).Append("'");// AUTOID 
            lstCmdText.Add(sb.ToString());
            sb.Remove(0, sb.ToString().Length);
            try
            {
                int iexe = DbHelperMySQL.ExecuteSql(lstCmdText[0].ToString());
                if (iexe > 0)
                {
                    msr.strMsId = ms.AUTOID.ToString();
                    msr.strMS = "保存成功!";
                }
                else
                {
                    msr.strMsId = "-1";
                    msr.strMS = "操作失败:服务器忙,请稍后再试!";
                }
            }
            catch
            {
                msr.strMsId = "-1";
                msr.strMS = "操作失败:服务器忙,请稍后再试!";
            }
            lstCmdText = null;
            sb = null;
            return msr;
        }

        /// <summary>
        /// 得到数据类型
        /// </summary>
        /// <param name="msq">条件</param>
        /// <returns>数据类型</returns>
        public MsReturned Getsys_asset_a3ByQuery(MsQuery msq)
        {
            DataSet ds = null;
            MsReturned msr = new MsReturned();
            StringBuilder sb = new StringBuilder();
            List<string> lstCmdText = new List<string>();
            sb.Append("select sys_asset_a3.* ");
            sb.Append(" from sys_asset_a3 ");
            sb.Append(" where 1=1 ").Append(msq.strquery);
            if (msq.strorder != null && msq.strorder != "")
            {
                sb.Append(" order by ").Append(msq.strorder);
            }
            lstCmdText.Add(sb.ToString());
            sb.Remove(0, sb.ToString().Length);
            try
            {
                ds = DbHelperMySQL.Query(lstCmdText[0].ToString());
            }
            catch { }
            msr.data = ds;
            return msr;
        }

        /// <summary>
        /// 删除sys_asset_a3
        /// </summary>
        /// <param name="msq">条件</param>
        /// <returns></returns>
        public MsReturned Deletesys_asset_a3ByQuery(MsQuery msq)
        {
            StringBuilder sb = new StringBuilder();
            MsReturned msr = new MsReturned();
            sb.Append(" delete from sys_asset_a3 where AUTOID > 0 ").Append(msq.strquery);
            try
            {
                int iexe = DbHelperMySQL.ExecuteSql(sb.ToString());
                if (iexe > 0)
                {
                    msr.strMsId = "1";
                    msr.strMS = "保存成功!";
                }
                else
                {
                    msr.strMsId = "-1";
                    msr.strMS = "操作失败:服务器忙,请稍后再试!";
                }
            }
            catch
            {
                msr.strMsId = "-1";
                msr.strMS = "操作失败:服务器忙,请稍后再试!";
            }
            sb = null;
            return msr;
        }

    }
}
